package com.kelvin.backend.redis.service.lock;

/**
 * <p>Title: BaseLockService</p>
 * <p>Description: </p>
 *
 * @author Kelvin.Chen
 * @datetime 2021/10/21 7:25
 */
public interface BaseLockService {

    /**
     * 上锁
     *
     * @param key
     * @param value
     * @param second
     */
    void lock(String key, Object value, long second);

    /**
     * 解锁
     *
     * @param key
     */
    void unlock(String key);

    /**
     * 执行
     *
     * @param key
     * @param value
     * @param second
     * @param service 函数式接口
     */
    void execute(String key, Object value, long second, InterfaceLockService service);
}
